// pages/cart/cart.js
import regeneratorRuntime from '../../lib/runtime/runtime';
import { getStorage, setStorage } from "../../util/set_get_Storage.js";
import { createOrder,preparePay } from "../../network/pay.js"

/* 1. 页面加载的时候
     1. 先从缓存中获取购物车的数据, 渲染到页面中
        + 这些商品的特点: checked 为true
    2. 微信支付
      1. 哪些人, 哪些账户可以实现微信支付
        1. 企业账号
        2. 企业账号后台中 必须 给开发者添加进白名单
          1. 一个appid 可以绑定多个开发者
          2. 这些开发者就可以共用这个appid 和 它的开发权限了
    3. 支付按钮 
      1. 判断缓存中有没有token
      2. 没有  跳转到授权页面
      3. 有token 直接可以支付
      4. 创建订单(发送请求), 获取订单号,
      5  将订单编号发送服务器, 获取pay参数
      6. 调用wx,requestPayment
      7. 支付成功后, 删除cart购物车数据
      8. 跳转到存页面
*/
Page({

  data: {
    address: {},// 存放用户地址
    cart: [],  // 缓存中购物车数据
    totlePrice: 0,  // 勾选商品的总价格
    totleNum: 0   // 勾选商品的总数量
  },
  // ============== 生命周期函数 =======================================
  onShow() {
    // 1. 判断缓存中是否地址缓存数据
    let address = getStorage("address");

    // 2. 获取缓存中购物车数据
    let cart = getStorage("cart") || [];

    // 3. 获取购物车数据 checked
    cart = cart.filter(el => el.checked);


    this.setData({ address });

    let totlePrice = 0;
    let totleNum = 0;
    cart.forEach(el => {
      if (el.checked) {
        totlePrice += el.goods_price * el.num;
        totleNum += el.num;
      }
    });


    this.setData({
      cart,
      totlePrice,
      totleNum,
      address
    })


  },
  // ================ 事件监听  ======================================
  async handleOrderPay() {

   
    // 1. 先判断缓存中有没有token值
    let token = getStorage('token');

    //2. 没有token值, 就跳转到授权支付页面
    if (!token) {
      wx.navigateTo({
        url: '/pages/authorization/authorization'
      });
      return
    }

    // 3. 创建订单
    //  3.1 准备请求头参数
    let header = { authorization: token };
    //  3.2 准备请求体参数

    let order_price = this.data.totlePrice; // 订单总价格
    let consignee_addr = this.data.address.all; // 地址
    let goods = []; // 商品数据

    let { cart } = this.data;

    // cart.forEach(el => {
    //   goods.push({
    //     goods_id: el.goods_id,
    //     goods_number: el.num,
    //     goods_price: el.goods_price,
    //   })
    // })
    // let queryParams = {
    //   order_price,
    //   consignee_addr,
    //   goods,
    //   method: "post"
    // }

    // 4. 准备发送请求, 获取订单编号
    // let {order_number} = await createOrder(queryParams, header);


    // 5. 将订单编号发送到后台, 获取pay参数 发起预支付
    // let {pay} = await preparePay(order_number, header); // 返回一个pay参数

    // 6. 调用微信小程序微信支付接口
    // wx.requestPayment({
    //   timeStamp: '',
    //   nonceStr: '',
    //   package: '',
    //   signType: '',
    //   paySign: '',
    //   success: (result)=>{
        
    //   }
    // });

    // 7. 支付成功后,向后台发送请求查看订单(订单号)
    //   支付成功  看markdown

    // 支付失败

    wx.showToast({
      title: '个人账户不支持微信支付!',
      icon: 'none'
    });
      




  }
})